package com.hzw.saas.api.user;

import java.util.List;

import com.hzw.saas.api.user.bo.CustomerLevelBO;
import com.hzw.saas.api.user.bo.CustomerLevelExpireBO;
import com.hzw.saas.api.user.query.CustomerLevelGetQuery;
import com.hzw.saas.common.util.enums.AssertEnum;

/**
 * <p>
 * 客户信息表 服务类
 * </p>
 *
 * @author zzl
 * @since 2021-04-03
 */
public interface ICustomerLevelService {

    boolean existCustomerLevel(CustomerLevelGetQuery query, AssertEnum throwOn);

    /**
     * 获取会员等级列表
     *
     * @return list
     */
    List<CustomerLevelBO> listLevels();

    List<CustomerLevelExpireBO> listLevelsWithExpireTime();

    /**
     * 根据ID获取等级信息
     *
     * @param id level id
     * @return level info
     */
    CustomerLevelBO getLevelById(String id);

    /**
     * 根据等级名称获取等级
     *
     * @param level level text
     * @return level info
     */
    CustomerLevelBO getLevelByName(String level);

    /**
     * 根据ID获取权益级别信息
     * 含从当前开始根据权益有效期转换的过期时间
     * @param id
     * @return
     */
    CustomerLevelExpireBO getLevelWithExpireTime(String id);

    /**
     * 更新会员级别配置信息
     *
     * @param level2Update level to update
     * @return success or fail
     */
    boolean updateLevel(CustomerLevelBO level2Update);

    /**
     * 删除会员等级
     *
     * @param levelId level id
     * @return success or fail
     */
    boolean deleteLevel(String levelId);

}
